﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Serialization;
using System.ComponentModel;
using System.Reflection;

namespace WebPALTT.Lib
{
    /*
     * Class: ScriptItem
     * 
     * This abstract class is the base class for all actions that use the compiled script module and inherits from @link[ActionItem.cs.htm, ActionItem].
     * 
     * ++{{NB:}} Changes to most attribute of a ScriptItem during runtime will not alter the runtime behavior.++
     */
    [Serializable]
    public abstract class ScriptItem : ActionItem
    {
        [CategoryAttribute("Action Properties"), ReadOnlyAttribute(true)]
        public override ActionType ActionType { get { return ActionType.Script; } }
        [BrowsableAttribute(false)]
        public abstract string VisibleCode { get; set; }
        [BrowsableAttribute(false)]
        public abstract string ScriptCode { get; }
        [BrowsableAttribute(false)]
        public abstract bool IsCodeEditable { get; }

        public ScriptItem() : base() { }
        public ScriptItem(string name) : base(name) { }
        public ScriptItem(SerializationInfo info, StreamingContext ctxt) : base(info, ctxt) { }
        public override void GetObjectData(SerializationInfo info, StreamingContext ctxt) { base.GetObjectData(info, ctxt); }
    }
}